package cn.iocoder.yudao.module.crossborder.product.service;

import cn.iocoder.yudao.module.crossborder.product.api.dto.BrandDTO;
import cn.iocoder.yudao.module.crossborder.product.api.dto.CategoryDTO;
import cn.iocoder.yudao.module.crossborder.product.api.dto.ProductCreateReqDTO;
import cn.iocoder.yudao.module.crossborder.product.api.dto.ProductDTO;

import java.util.List;

/**
 * 商品管理 Service 接口
 *
 * @author LHL
 */
public interface ProductService {

    /**
     * 获得商品
     *
     * @param id 编号
     * @return 商品
     */
    ProductDTO getProduct(Long id);

    /**
     * 获得商品列表
     *
     * @param ids 编号列表
     * @return 商品列表
     */
    List<ProductDTO> getProductList(List<Long> ids);

    /**
     * 创建商品
     *
     * @param createReq 创建请求
     * @return 编号
     */
    Long createProduct(ProductCreateReqDTO createReq);

    /**
     * 获得商品分类
     *
     * @param id 编号
     * @return 商品分类
     */
    CategoryDTO getCategory(Long id);

    /**
     * 获得商品分类列表
     *
     * @param ids 编号列表
     * @return 商品分类列表
     */
    List<CategoryDTO> getCategoryList(List<Long> ids);

    /**
     * 获得商品品牌
     *
     * @param id 编号
     * @return 商品品牌
     */
    BrandDTO getBrand(Long id);

    /**
     * 获得商品品牌列表
     *
     * @param ids 编号列表
     * @return 商品品牌列表
     */
    List<BrandDTO> getBrandList(List<Long> ids);

    /**
     * 更新商品库存
     *
     * @param productId 商品编号
     * @param quantity 库存数量
     * @return 是否成功
     */
    Boolean updateStock(Long productId, Integer quantity);

    /**
     * 更新商品价格
     *
     * @param productId 商品编号
     * @param price 商品价格
     * @param currency 货币代码
     * @return 是否成功
     */
    Boolean updatePrice(Long productId, String price, String currency);

}
